RestTemplate হলো Spring Framework-এর একটি ক্লাস, যা HTTP API-এর মাধ্যমে সার্ভারের সাথে ডেটা আদান-প্রদান করার জন্য ব্যবহৃত হয়। এটি GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড সাপোর্ট করে।
RestTemplate কনফিগারেশন উদাহরণ
১. RestTemplate Bean কনফিগার করা
আপনার স্প্রিং বুট অ্যাপ্লিকেশনে একটি @Configuration ক্লাস তৈরি করুন এবং সেখানে RestTemplate এর জন্য একটি @Bean ডিফাইন করুন:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
২. RestTemplate ব্যবহার করে HTTP কল করা
আপনার কন্ট্রোলার বা সার্ভিস ক্লাসে RestTemplate ব্যবহার করতে পারেন:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class ApiController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consume-api")
public String consumeApi() {
String url = "https://jsonplaceholder.typicode.com/posts/1";
return restTemplate.getForObject(url, String.class);
}
}
উদাহরণ: RestTemplate দিয়ে GET, POST, PUT, DELETE অপারেশন
১. GET রিকুয়েস্ট
@GetMapping("/get-example")
public String getExample() {
String url = "https://jsonplaceholder.typicode.com/posts/1";
return restTemplate.getForObject(url, String.class);
}
২. POST রিকুয়েস্ট
@PostMapping("/post-example")
public String postExample() {
String url = "https://jsonplaceholder.typicode.com/posts";
Post post = new Post(1, "My Title", "This is a sample body.");
return restTemplate.postForObject(url, post, String.class);
}
class Post {
private int userId;
private String title;
private String body;
// Constructor, getters, and setters
public Post(int userId, String title, String body) {
this.userId = userId;
this.title = title;
this.body = body;
}
}
৩. PUT রিকুয়েস্ট
@PutMapping("/put-example")
public void putExample() {
String url = "https://jsonplaceholder.typicode.com/posts/1";
Post updatedPost = new Post(1, "Updated Title", "This is an updated body.");
restTemplate.put(url, updatedPost);
}
৪. DELETE রিকুয়েস্ট
@DeleteMapping("/delete-example")
public void deleteExample() {
String url = "https://jsonplaceholder.typicode.com/posts/1";
restTemplate.delete(url);
}
RestTemplate-এর অ্যাডভান্সড কনফিগারেশন
১. টাইমআউট এবং কাস্টম কনফিগারেশন
কাস্টম HTTP ক্লায়েন্ট দিয়ে RestTemplate কনফিগার করতে পারেন:
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.HttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) // 5 seconds
.setSocketTimeout(5000) // 5 seconds
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
return new RestTemplate(factory);
}
}
৩. RestTemplate তে হেডার যোগ করা
আপনার HTTP রিকুয়েস্টে হেডার যোগ করতে চাইলে HttpHeaders এবং HttpEntity ব্যবহার করুন:
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
@GetMapping("/header-example")
public String headerExample() {
String url = "https://jsonplaceholder.typicode.com/posts/1";
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer your-token");
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
return response.getBody();
}
উপসংহার
উপরে দেওয়া কনফিগারেশন এবং উদাহরণগুলোর মাধ্যমে আপনি RestTemplate ব্যবহার করে যেকোনো HTTP API কল সহজে পরিচালনা করতে পারবেন। এটি মাইক্রোসার্ভিস বা এক্সটার্নাল API-এর সাথে ইন্টিগ্রেশন করতে বেশ কার্যকর।
Read more